package array

import (
	"fmt"
)

func DeclareSlice() {
	var arr [5]int = [...]int{1, 2, 3, 4, 5}

	slice := arr[1:4] // 左闭右开。此种方式声明的slice容量是(数组末尾-区间开始)。
	for i := 0; i < len(slice); i++ {
		fmt.Printf("slice[%v]: %v\n", i, slice[i])
	}
	fmt.Println("slice的内容是: ", slice)
	fmt.Println("slice的长度是: ", len(slice))
	fmt.Println("slice的容量是: ", cap(slice))

	// 使用make创建切片,第二个参数代表初始化元素个数。最后一个参数代表容量，可省略
	var slice2 []int = make([]int, 4, 10)
	fmt.Println("slice2 = ", slice2)
	fmt.Println("slice2's size = ", len(slice2))
	fmt.Println("slice2's cap = ", cap(slice2))
	for index, v := range slice2 {
		fmt.Printf("slice2[%v] = %v; ", index, v)
	}
	fmt.Println("")

	//使用数组声明
	var slice3 []string = []string{"tom", "jack", "del"}
	slice3 = append(slice3, "abc")
	fmt.Println("slice3 = ", slice3)
	fmt.Println("slice3's size = ", len(slice3))
	fmt.Println("slice3's cap = ", cap(slice3))
	for _, v := range slice3 {
		fmt.Printf("name = %s;\t", v)
	}
	fmt.Println("")
}
